home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 4 / CU Amiga Magazine's Super CD-ROM 04 (1996)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1996-11].iso / magazine / psion / misc / vocab.lzx / vocab.opl < prev   
Text File  |  2007-01-28  |  14KB  |  692 lines

  1. REM +-----------------------+
  2. REM Author  Jon Simpson   
  3. REM Title                  
  4. REM Date      
  5. REM +-----------------------+
  6. PROC vocab:
  7.  
  8. REM Procedures
  9. GLOBAL route$(15,8), k$(15)
  10.  
  11. REM Languages
  12. GLOBAL lan$(6,11), lfn$(128), clan$(11)
  13. GLOBAL maxnl%
  14. GLOBAL lanused%, clan%
  15.  
  16. REM Files
  17. GLOBAL cdfn$(128), rcnt%
  18.  
  19. REM Flags
  20. GLOBAL true%, false%, pl%, prcon%, contpr%
  21. GLOBAL gupf%
  22.  
  23. REM Choice option strings
  24. GLOBAL gend$(26), mnu%
  25. GLOBAL spst$(25)
  26.  
  27. REM Search/Find operations
  28. GLOBAL ssf%
  29. GLOBAL sw$(20)
  30.  
  31. REM Statistics
  32. GLOBAL twc%, tgc%
  33.  
  34. REM Insertion/editing
  35. GLOBAL lhlw$(20),lflw$(20),lpho$(20),lgen%
  36.  
  37. REM key/menu option
  38. LOCAL k%         
  39. LOCAL kpos%
  40.  
  41. k%=%+
  42.  
  43. Initial:
  44. ReadLan:
  45. DrawScr:
  46. DO
  47.  k% = DrawMenu:
  48.  IF k%
  49.   kpos%=LOC( k$, CHR$(k%) )
  50.   IF kpos% <> 0
  51.    @(route$( kpos% )):
  52.   ENDIF
  53.  ENDIF
  54. UNTIL k%=%x
  55.  
  56. ENDP
  57.  
  58. PROC Initial:
  59. LOCAL ct%
  60.  k$="" 
  61.  k$=k$+"D" : route$(1)="Del"
  62.  k$=k$+"E" : route$(2)="Ins"
  63.  k$=k$+"F" : route$(3)="Find"
  64.  k$=k$+"G" : route$(4)="Guess"
  65.  k$=k$+"N" : route$(5)="New"
  66.  k$=k$+"O" : route$(6)="Open"
  67.  k$=k$+"P" : route$(7)="Pri"
  68.  k$=k$+"R" : route$(8)="Rmv"
  69.  k$=k$+"S" : route$(9)="SeSpec"
  70.  k$=k$+"U" : route$(10)="Upd"
  71.  k$=k$+"V" : route$(11)="Vsn"
  72.  k$=k$+"X" : route$(12)="Exit"
  73.  lfn$ = "Langs"
  74.  maxnl% = 6 : lanused% = 0
  75.  ct%=1
  76.  WHILE ct% <= maxnl%
  77.   lan$( ct% ) = "Unspecified"  
  78.   ct%=ct% + 1
  79.  ENDWH
  80.  
  81.  true%=-1
  82.  false%=0
  83.  pl%=false%
  84.  contpr%=false%
  85.  gupf%=false%
  86.  twc%=0
  87.  tgc%=0
  88.  gend$="not applicable,male,female"
  89.  spst$=REPT$(" ",25)
  90.  
  91. ENDP
  92.  
  93. PROC DrawMenu:
  94.  mINIT
  95.  mCARD "File","New Language",%N,"Open Language",%O,"Remove Language",%R
  96.  mCARD "Quiz","Guess word",%G,"Specify search field",%S,"Find word",%F
  97.  mCARD "Change","Update word",%U,"Enter word",%E,"Delete word",%D
  98.  mCARD "Special","Printer Logging",%P,"Version",%V,"Exit",%X
  99.  mnu%=MENU
  100.  RETURN mnu%
  101. ENDP
  102.  
  103. PROC DrawScr:
  104.  gSETWIN 0,48,gWIDTH,gHEIGHT-48
  105.  gBORDER 1
  106.  RANDOMIZE DAY+HOUR+SECOND
  107.  gTMODE 3
  108.  gAT 5,9 : gPRINT "No. of tests : "
  109.  gAT 120,9 : gPRINT "No. of guesses : "
  110.  gAT 60,18 : gPRINT "Overall rating : "
  111.  gAT 5,27 : gPRINT CHR$(184)+"J.Simpson 1993"
  112.  gAT 120,27 : gPRINT "No. of records : "
  113.  gSTYLE 1
  114.  AddRecs:
  115.  AddGues:
  116.  AddWrds:
  117. ENDP
  118.  
  119. PROC AddRecs:
  120.  gAT 200,27
  121.  gPRINT "       "
  122.  gAT 200,27
  123.  gPRINT rcnt%
  124. ENDP
  125.  
  126. PROC AddFct:
  127. LOCAL tgc,twc
  128.  tgc=tgc% : twc=twc%
  129.  gAT 150,18
  130.  IF twc%=0
  131.   gPRINT "0   " 
  132.  ELSE
  133.   gPRINT FIX$(tgc/twc,3,6)+"    "
  134.  ENDIF
  135. ENDP
  136.  
  137. PROC AddGues:
  138.  gAT 200,9
  139.  gPRINT "       "
  140.  gAT 200,9
  141.  gPRINT tgc%
  142.  AddFct:
  143. ENDP
  144.  
  145. PROC AddWrds:
  146.  gAT 75,9
  147.  gPRINT "       "
  148.  gAT 75,9
  149.  gPRINT twc%
  150.  AddFct:
  151. ENDP
  152.  
  153. PROC Del:
  154. LOCAL fp%
  155.  dINIT "Enter word for deletion search"
  156.  dEDIT sw$, "Word"
  157.  IF DIALOG
  158.   POSITION 1
  159.   DO
  160.    fp%=FIND( sw$ )
  161.    IF fp%=0
  162.     dINIT "Information"
  163.     dTEXT "Unable to match : ",sw$
  164.     DIALOG
  165.    ElSE
  166.     dINIT  "Deletion confirmation"
  167.     DTEXT "Home ",B.hlw$
  168.     DTEXT LEFT$(clan$,4)+" ",B.flw$
  169.     dBUTTONS "Adandon",-27,"Delete",13
  170.     IF DIALOG=13
  171.      ERASE
  172.      rcnt%=rcnt%-1
  173.      AddRecs:
  174.     ENDIF
  175.    ENDIF
  176.    NEXT
  177.   UNTIL fp%=0
  178.  ENDIF
  179. ENDP
  180.  
  181.  
  182. PROC Find:
  183.  IF ssf%=1
  184.   dINIT "Enter word in home language"
  185.  ELSE
  186.   dINIT "Enter word in " + clan$
  187.  ENDIF
  188.  dTEXT "","Note: to "
  189.  dTEXT "match one char ","?",$100
  190.  dTEXT "match any chars ","*",$100
  191.  dEDIT sw$, "Word"
  192.  IF DIALOG
  193.   RunSch:( sw$ )
  194.  ENDIF
  195. ENDP
  196.  
  197. PROC Compare$:( s1$, s2$ )
  198. LOCAL s1p%, s2p%,rp%,lp%, rw$(20),tc$(1),al%
  199.  tgc%=tgc%+1
  200.  AddGues:
  201.  s1p%=1 : s2p%=0 : rp%=1 : al%=LEN( s2$ )
  202.  WHILE s1p% <= LEN(s1$)
  203.   tc$=MID$(s1$,s1p%,1)
  204.   lp%=LOC(RIGHT$(s2$,al%-s2p%),tc$)
  205.   IF lp%<>0
  206.    IF lp% > 1
  207.     rw$=rw$+REPT$(".",lp%-1)
  208.    ENDIF
  209.    rw$=rw$+tc$
  210.    s2p%=s2p%+lp%
  211.   ENDIF
  212.   s1p%=s1p%+1
  213.  ENDWH
  214.  rw$=rw$+REPT$(".",al%-LEN(rw$))
  215.  RETURN rw$
  216. ENDP
  217.  
  218. PROC Guess:
  219. LOCAL rn%,rw$(20),gw$(20),hw$(20),aw$(20)
  220. LOCAL bw$(20), dr%, dr2%, atc%,ss$(4)
  221.  dr%=12
  222.  WHILE dr%<>0
  223.   twc%=twc% +1
  224.   atc%=1
  225.   rn%=RND*rcnt%
  226.   POSITION rn%
  227.   IF ssf%=1
  228.    rw$=B.hlw$
  229.    aw$=B.flw$
  230.    hw$=clan$
  231.    ss$=""
  232.   ELSE
  233.    rw$=B.flw$
  234.    aw$=B.hlw$
  235.    hw$="Home language "
  236.    IF B.bf%=2
  237.     ss$=" (m)"    
  238.    ENDIF
  239.    IF B.bf%=3
  240.     ss$=" (f)"    
  241.    ENDIF
  242.   ENDIF
  243.   gw$=REPT$(".",LEN(aw$))
  244.   DO
  245.    dINIT "Enter guess "+FIX$(atc%,0,2)+" for ["+rw$+ss$+"]"
  246.    dEDIT gw$,hw$
  247.    dBUTTONS "Abandon",-27,"Next Word",9,"Try this",13
  248.    dr%=DIALOG
  249.    IF dr%=13
  250.     REM now to test gw$ against aw$
  251.     IF pl%
  252.      LPRINT "Test "+FIX$(atc%,0,4)+" for "+rw$+" is "+gw$
  253.     ENDIF
  254.     atc%=atc%+1
  255.     IF gw$<>aw$
  256.      bw$=Compare$:( gw$, aw$ )
  257.      gw$=bw$
  258.     ELSE
  259.      AddWrds:
  260.      dINIT "Correct  ! "
  261.      dTEXT bw$+" is ",rw$
  262.      IF B.pho$ <> ""
  263.       dTEXT "Phonetic: ",B.pho$
  264.      ENDIF
  265.      dBUTTONS "Abandon",-27,"Next test",13
  266.      dr%=DIALOG
  267.      IF pl%
  268.       LPRINT "Correct ["+bw$+"] is ["+rw$+"]"
  269.      ENDIF
  270.      IF dr%=13
  271.       dr%=12
  272.      ENDIF
  273.     ENDIF  REM correct result given    
  274.    ENDIF   REM accepted word to try
  275.   UNTIL dr%<>13
  276.  ENDWH    REM not finshed testing
  277. ENDP
  278.  
  279. PROC Ins:
  280. LOCAL opt%, thlw$(20),tflw$(20),tpho$(20),tgen%
  281.  
  282.  thlw$=lhlw$ : tflw$=lflw$ : tpho$=lpho$ :  tgen%=lgen% 
  283.  opt%=32
  284.  WHILE opt%=32
  285.   opt%=1
  286.   IF gupf%=true%
  287.    dINIT "Edit "+clan$+" word"
  288.   ELSE
  289.    dINIT "New "+clan$+" word"
  290.   ENDIF
  291.   dEDIT lhlw$,"Home word"
  292.   dEDIT lflw$,LEFT$(clan$,3)+" word"
  293.   dEDIT lpho$,LEFT$(clan$,3)+" phtic"
  294.   dCHOICE lgen%,"Gender",gend$
  295.   IF DIALOG
  296.    dINIT LEFT$(lhlw$,12) + " - " + LEFT$(lflw$,12)
  297.    IF gupf%=true%
  298.      dBUTTONS "Ignore Changes",27,"Save",13
  299.    ELSE
  300.     dBUTTONS "Aband",-27,"Save&Retain",32,"Save",13
  301.    ENDIF
  302.    opt%=DIALOG
  303.    IF (opt%=0) and (gupf%=true%)
  304.     lhlw$=thlw$ : lflw$=tflw$ : lpho$=tpho$ : lgen%=tgen% 
  305.     opt%=13
  306.    ENDIF
  307.    IF (opt%=32) or (opt%=13)
  308.     B.hlw$=lhlw$ : B.flw$=lflw$ : B.pho$=lpho$ : B.bf%=lgen%
  309.     APPEND
  310.     rcnt% = rcnt% + 1 
  311.     AddRecs:
  312.    ENDIF
  313.   ENDIF
  314.  ENDWH REM opt is to store and retain
  315. ENDP
  316.  
  317. PROC New:
  318. LOCAL t%, ct%, ct2%
  319.  IF lanused%=maxnl%
  320.   t% = ALERT( "Unable to add a new language.")
  321.  ELSE
  322.    IF lanused% = 0
  323.     dINIT "Please specify a language"
  324.    ELSE
  325.     dINIT "Please specify a new language"
  326.    ENDIF
  327.    ct%=1
  328.    WHILE ct% <= lanused%
  329.     dTEXT "Language " + FIX$( ct%,0,1), lan$(ct%)
  330.     ct%=ct%+1
  331.    ENDWH
  332.    WHILE ct% <= maxnl%
  333.     dEDIT lan$(ct%), "Language " + FIX$( ct%,0,1)
  334.     ct%=ct%+1
  335.    ENDWH
  336.    DIALOG
  337.    ct%=1 : lanused%=0
  338.    WHILE ct% <= maxnl%
  339.  
  340.     REM check all langs are unique
  341.     ct2%=1
  342.     WHILE ct2% < ct%
  343.      IF lan$(ct2%)=lan$(ct%)
  344.       lan$(ct%)="Unspecified"
  345.      ENDIF
  346.      ct2%=ct2%+1
  347.     ENDWH
  348.     IF lan$(ct%)<>"Unspecified"
  349.      lanused%=lanused%+1
  350.     ENDIF
  351.     ct%=ct%+1
  352.    ENDWH
  353.    IF lanused%=0
  354.     BEEP 0.5,200
  355.     ALERT("No languages specified.")
  356.    ELSE
  357.     WritLan:   REM write to file
  358.    ENDIF
  359.    IF lanused%=1
  360.     UseLan:( 1 )
  361.    ENDIF   
  362.  ENDIF
  363. ENDP
  364.  
  365. PROC Open:
  366. LOCAL ct%, t%, lc$(75)
  367.  IF lanused% < 2
  368.   clan%=0
  369.   UseLan:( 1 )
  370.   dINIT "Information"
  371.   dTEXT "","Only one language defined for use."
  372.   dTEXT "","Language set to "+clan$
  373.   DIALOG
  374.  ELSE
  375.   dINIT "Please specify a language"
  376.   ct%=1 : lc$=""
  377.   WHILE ct% < lanused%
  378.    lc$=lc$+lan$(ct%)+","
  379.    ct%=ct%+1
  380.   ENDWH
  381.   lc$=lc$+lan$( lanused% )
  382.   dCHOICE t%,"Language ",lc$
  383.   DIALOG
  384.   IF t%
  385.    UseLan:( t% )
  386.   ENDIF
  387.   GIPRINT "Lang: "+clan$
  388.  ENDIF
  389.  IF pl%
  390.   LPRINT "Current language : " + clan$
  391.  ENDIF
  392. ENDP
  393.  
  394. PROC Pri:
  395.  IF pl%
  396.   pl%=false%
  397.   GIPRINT "Printer logging off."
  398.   IF prcon%
  399.    TRAP LCLOSE
  400.   ENDIF
  401.  ELSE
  402.   PrTest:
  403.   IF prcon%=false%
  404.    GIPRINT "Printer not conected"
  405.   ELSE
  406.    pl%=true% 
  407.    GIPRINT "Printer logging on."
  408.   ENDIF
  409.  ENDIF
  410. ENDP
  411.  
  412. PROC Rmv:
  413. LOCAL lc$(75), ct%, t%
  414.  dINIT "Please specify a language"
  415.  ct%=1 : lc$=""
  416.  WHILE ct% < lanused%
  417.   lc$=lc$+lan$(ct%)+","
  418.   ct%=ct%+1
  419.  ENDWH
  420.  lc$=lc$+lan$( lanused% )
  421.  dCHOICE t%,"Language ",lc$
  422.  DIALOG
  423.  IF t%
  424.   dINIT "Please Confirm"
  425.   dTEXT "","Please note this WILL delete data file"
  426.   dTEXT "Deletion of:",lan$(t%)
  427.   dBUTTONS "Abandon",-27,"Delete",13
  428.   IF DIALOG
  429.    ct%=t%
  430.    REM move language names
  431.    WHILE ct% < maxnl%
  432.     lan$( ct% ) = lan$( ct% + 1)
  433.     ct%=ct%+1
  434.    ENDWH
  435.    lan$( maxnl% )="Unspecified"
  436.    lanused%=lanused% - 1
  437.  
  438.    REM delete data file
  439.    IF t%=clan%
  440.     TRAP CLOSE  REM attempt to close data file
  441.     rcnt%=0 
  442.     AddRecs:
  443.    ENDIF
  444.  
  445.    IF EXIST( cdfn$ )
  446.     TRAP DELETE( cdfn$ )
  447.    ENDIF
  448.  
  449.    REM test for no languages left
  450.    IF lanused%=0
  451.     WHILE lanused%=0
  452.      New:
  453.     ENDWH
  454.     Open:
  455.     
  456.    ELSE
  457.     Writlan:
  458.     IF t%=clan%
  459.      REM note this is current language, so
  460.      Open:
  461.     ENDIF REM deleted current language
  462.    ENDIF  REM no languages left
  463.    REM attempt to delete data file   
  464.   
  465.   ENDIF   REM deletion confirmed
  466.  ENDIF    REM language specified
  467. ENDP
  468.  
  469. PROC SeSpec:
  470.  IF ssf%=1
  471.   ssf%=2
  472.   GIPRINT "Searching for "+clan$
  473.  ELSE
  474.   ssf%=1
  475.   GIPRINT "Searching on home language"
  476.  ENDIF
  477.  
  478.  REM log to printer
  479.  IF pl%
  480.   IF ssf%=1
  481.    LPRINT "Searching on home language"
  482.   ELSE
  483.    LPRINT "Searching for "+clan$
  484.   ENDIF
  485.  ENDIF
  486. ENDP
  487.  
  488. PROC Upd:
  489. LOCAL ct%,fp%
  490.  ct%=0
  491.  dINIT "Enter word for deletion search"
  492.  dEDIT sw$, "Word"
  493.  IF DIALOG
  494.   POSITION 1
  495.   DO
  496.    fp%=FIND( sw$ )
  497.    IF fp%<>0
  498.     ct%=ct%+1
  499.     dINIT  "Edit confirmation "+FIX$(ct%,0,3)
  500.     DTEXT "Home ",B.hlw$
  501.     DTEXT LEFT$(clan$,4)+" ",B.flw$
  502.     dBUTTONS "Adandon",-27,"Edit",13
  503.     IF DIALOG=13
  504.      lhlw$=B.hlw$ : lflw$=B.flw$ : lpho$=B.pho$ : lgen%=B.bf% 
  505.      ERASE
  506.      rcnt%=rcnt%-1
  507.      AddRecs:
  508.      gupf%=true%
  509.      Ins:
  510.      gupf%=false%
  511.     ENDIF
  512.    ENDIF
  513.    NEXT
  514.   UNTIL fp%=0
  515.  ENDIF
  516. ENDP
  517.  
  518. PROC Vsn:
  519.  dINIT "Vocab Tester"
  520.  dTEXT "Version ","1.00"
  521.  DIALOG
  522. ENDP
  523.  
  524. PROC Exit:
  525.  TRAP CLOSE
  526. ENDP
  527.  
  528. PROC ReadLan:
  529.  IF EXIST( lfn$ ) REM does lang name file exist
  530.   OPEN lfn$,A,lng$ REM yes ...
  531.   USE A
  532.   DO
  533.    lanused% = lanused% + 1
  534.    lan$( lanused% ) = A.lng$
  535.    NEXT   
  536.   UNTIL (EOF) or lanused% > maxnl%
  537.   CLOSE
  538.   IF lanused%=1
  539.    UseLan:( lanused% )
  540.   ELSE
  541.    Open:
  542.   ENDIF
  543.  ELSE
  544.   REM operator must specify a language
  545.   WHILE lanused%=0
  546.    New:
  547.   ENDWH
  548.  ENDIF
  549. ENDP
  550.  
  551. PROC WritLan:
  552. LOCAL ct%
  553.  ct%=1
  554.   IF EXIST( lfn$ )
  555.    DELETE lfn$
  556.   ENDIF
  557.   CREATE lfn$,A,lng$
  558.   USE A
  559.   WHILE ct% <= maxnl%
  560.    IF lan$( ct% ) <> "Unspecified"
  561.     A.lng$=lan$( ct% )
  562.     APPEND   
  563.    ENDIF
  564.    ct% = ct% + 1
  565.   ENDWH
  566.  CLOSE
  567. ENDP
  568.  
  569. PROC PrTest:
  570.  TRAP LOPEN "PAR:A"
  571.  IF ERR=0
  572.   prcon%=true%
  573.  ELSE
  574.   prcon%=false%
  575.  ENDIF
  576. ENDP
  577.  
  578. PROC UseLan:( Lnum% )
  579.  IF Lnum% <> clan%
  580.   TRAP CLOSE
  581.   clan%=lnum%
  582.   clan$=lan$( clan% )
  583.   cdfn$="\OPD\"+LEFT$(clan$,7)
  584.   IF EXIST( cdfn$)
  585.    OPEN cdfn$, B, hlw$, flw$, pho$, bf%
  586.   ElSE
  587.    CREATE cdfn$, B, hlw$, flw$, pho$, bf%
  588.   ENDIF
  589.   rcnt%=COUNT
  590. ENDIF
  591. ENDP
  592.  
  593. PROC StMtch:( s1$, s2$ )
  594. LOCAL lcs1%, lcs2%, cont%, lc$(1), rv%
  595.  lcs1% = 1 : lcs2% = 0 : cont%=true%
  596.  WHILE cont%
  597.   lc$=MID$( s1$,lcs1%,1)
  598.   IF LOC( "*?",lc$ ) = 0
  599.    lcs2% = LOC(  RIGHT$( s2$, LEN(s2$)-lcs2%),lc$)  
  600.    IF lcs2% = 0
  601.     cont%=false%
  602.     rv%=false%
  603.    ELSE
  604.     lcs1%=lcs1%+1
  605.    ENDIF
  606.   ELSE
  607.    lcs1%=lcs1%+1
  608.   ENDIF
  609.   IF lcs1% > LEN( s1$ )
  610.    cont%=false%
  611.    rv%=true%
  612.   ENDIF
  613.  ENDWH
  614.  RETURN rv%
  615. ENDP
  616.  
  617. PROC DispMch:( s$ )
  618. LOCAL lr%, ss$(4)
  619.  ss$=""
  620.  IF B.bf%=2
  621.   ss$=" (m)"
  622.  ELSE
  623.   ss$=" (f)"
  624.  ENDIF
  625.   IF pl%
  626.    LPRINT CHR$(186) + LEFT$( " "+B.hlw$+spst$,25)+ CHR$(186) +LEFT$( " "+B.flw$+ss$+spst$,25) + CHR$(186) + LEFT$( " "+B.pho$+spst$ ,25 ) + CHR$(186)
  627.   ENDIF
  628.   IF contpr%=false%
  629.    dINIT "Matched to " + s$
  630.    dTEXT "Home word",B.hlw$
  631.    dTEXT LEFT$(clan$,3)+" word",B.flw$+ss$
  632.    dTEXT LEFT$(clan$,3)+" phonetic",B.pho$
  633.    IF pl%
  634.     dBUTTONS "Cancel Search",-27,"Next",32,"Print all",13
  635.    ELSE
  636.     dBUTTONS "Cancel Search",-27,"Next",32
  637.    ENDIF
  638.    lr%=DIALOG
  639.   ELSE
  640.    lr%=13  REM flag to keep printing
  641.   ENDIF
  642.   RETURN lr%
  643. ENDP
  644.  
  645. PROC RunSch:( s$ )
  646. LOCAL fp%, stm%,fnd%, lw$(20), cpo%
  647.  fp%=1 : fnd%=false% : contpr%=false% : cpo%=false%
  648.  POSITION 1
  649.  IF pl%
  650.   LPRINT CHR$(201)+REPT$(CHR$(205),25)+CHR$(203)+REPT$(CHR$(205),25)+CHR$(203)+ REPT$(CHR$(205),25)+CHR$(187)
  651.   LPRINT CHR$(186)+ "Home country             " + CHR$(186) + LEFT$(clan$ + " word "+spst$,25)  +CHR$(186) + "Phonetic                 " + CHR$(186)
  652.   LPRINT CHR$(204)+REPT$(CHR$(205),25)+CHR$(206)+REPT$(CHR$(205),25)+CHR$(206)+ REPT$(CHR$(205),25)+CHR$(185)
  653.  ENDIF
  654.  DO
  655.   fp%=FIND( s$ )
  656.   IF (fp%=0) AND (fnd%=false%)
  657.    dINIT "Whoops"
  658.    dTEXT "Unable to match ",s$
  659.    DIALOG
  660.   ELSE
  661.    REM check match is for current search spec
  662.    IF ssf% = 1
  663.     lw$=B.hlw$
  664.    ELSE
  665.     lw$=B.flw$
  666.    ENDIF
  667.    stm%=StMtch:( s$, lw$ )
  668.    IF LEN(lw$) > 0
  669.     IF stm%=true%
  670.      fnd%=true%
  671.      fp%=DispMch:( s$ )
  672.      IF fp%=13
  673.       contpr%=true%
  674.       IF cpo%=false%
  675.        BUSY "Printing"
  676.        cpo%=true%
  677.       ENDIF REM check for display of BUSY 
  678.      ENDIF  REM db option returned for print
  679.     ENDIF    REM strings matched, find succes
  680.     IF NOT EOF
  681.      NEXT
  682.     ENDIF  REM not yet end of file
  683.    ENDIF   REM zero length string
  684.   ENDIF    REM found match in file
  685.  UNTIL fp%=0
  686.  IF pl%
  687.   LPRINT CHR$(200)+REPT$(CHR$(205),25)+CHR$(202)+ REPT$(CHR$(205),25)+CHR$(202)+ REPT$(CHR$(205),25)+CHR$(188)
  688.  ENDIF
  689.  BUSY ""
  690. ENDP
  691.  
  692.